Scrapbox機能拡張から本体開発へ (daiiz)
こんばんは
ユーザー、インターンを経て、今月入社しました
マイブーム
左側で編集しているプロジェクトと別のStreamを流しておくのも、更新に気づけて便利です
https://gyazo.com/789ceddd53e85a3080c4b6f209b448e2
Scrapboxを好きなだけ拡張していく話をします
5分しかないですが二部構成です
インターンに参加してさらに拡張し、入社した話
見た目のカスタマイズや独自機能を付けたい
UserCSS、UserScriptでできる
projectの見た目をカスタマイズできる
少々上級者向けの機能
自分に対してのみコードを実行できる
自分のページにコードを書けば、お手軽に実験できる
UserScriptドハマリ時期
Scrapbox上でプログラミングできる体験が新鮮だった
書いては実行して試す、の繰り返しが超簡単にできる
快適!
どうなるか?
ブラウザでのエラーを収集しているSentryのログに daiiz が入ったURLが大量に出てくる Slackに流れてきて気付いてびっくり
clientでのスクボ本体のエラーが見えない状況
やばい
UserScriptのエラーを送信しないようにしたのがインターンでの初仕事
落ち着きを取り戻した
カスタマイズを共有したい
Drinkup 1 での交流でカスタマイズ話を沢山聞けて面白かった
CSSやJavaScriptのコードを見せ合う場所が欲しい
コードが多少わからなくても、真似するものがあれば、自分流に調整できる
新作が共有されると、毎回見に行って感激しています daiiz.icon
もっと実験しやすく、コードの更新を素早く伝えたい
Chrome拡張機能を作った
ストアを更新すると各clientが自動で最新状態が保たれるのがいい
機能ごとにON/OFFできる仕組みを考えた
Scrapboxから離れずに設定できるようにしたかったのでUserScriptで書けるようにした
code:js
$('body').attr('data-daiiz-rel-bubble', 'off'); // 関連ページを吹き出し表示する
$('body').attr('data-daiiz-text-bubble', 'on'); // リンク先ページのテキストを表示する
$('body').attr('data-daiiz-icon-button', 'on'); // アイコンをボタンにする
仕組み
MutationObserver を使って拡張機能側で data-daiiz-* 属性の変更を監視しておく
UserScriptで data-daiiz-* に対して値をセットする
拡張機能側で機能のON/OFFが切り替わる
主な機能
リンクをホバーして吹き出しを表示する
関連ページをその場で見れる
https://gyazo.com/e4be2e5d69e22459c13d5237c0033217
遷移先のページの内容をプレビューできる
https://gyazo.com/f504e21a4b8cec998371ced10d993d2b
アイコンをボタンとして使う
[diary-button.icon]などと書くとボタンとして認識される
クリックするとdiary-buttonページ内の code:button.js が実行される
ScrapboxのUIを崩さずに好きなだけボタンを置ける
https://gyazo.com/d6cce6636c355f32ced25e993038e9ca
インターン
社内のスクボが凄い
既存コンテンツがそのまま daiiz.icon 向けの教科書に早変わりする
新メンバーでも必要なページが自然と見つかる
一旦ページに入ると、次に読むとよいページが湧いてくる
いま知りたいこととは直接的には関係ないが、関連性はある、周辺知識を吸収できる
気になるものから作る
作ってからでないと良し悪しがわからないものもある
前から作りたかった機能を付けてみたりしたが、しっくり来なかったりした
window.scrapboxを拡張させた
https://gyazo.com/f530dbf4ea5e7d15fc049f01b7734413
これまで daiiz.icon が自前で拡張していたことを、標準機能でやりやすく
TimeStamp
Ctrl+Tで日時を入力できる
UserScriptから好きなフォーマットを設定できる
見出しメニューなどを作れる
https://gyazo.com/baf1de8ad1095fe50951d4ae65bc6de2
一つのページにメンバー各々の意見を書いているときなど、各人の行にジャンプしやすくて便利
https://gyazo.com/e3c58456416d0ec4dca057163d356575/thumb/300.png
Scrapbox本体機能への初コミット
外出先からも書きたい daiiz.icon
エディタの実装を学んで、モバイルにも応用した
テキスト範囲選択のUIがよくできて気に入っている
大雑把に始点・終点をなぞればいい
最近、普通ののウェブページ上でもやってしまう
書きやすくなっているはず
入社
いちユーザーとして始めた機能拡張の最終進化
とにかくワクワクしている
Scrapboxを作り続けます
自分だけの用途にしばられた機能にならないように気をつける
究極の書きやすさと議論のしやすさ、書き溜めた情報を繋いで活かせる世界を目指したい